package cn.tedu.charging.cost.dao.repository.impl;

import cn.tedu.charging.cost.dao.repository.CostRuleCacheRepository;
import cn.tedu.charging.cost.pojo.po.CostRulePO;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.core.ValueOperations;
import org.springframework.stereotype.Repository;

import java.util.Collections;
import java.util.List;

@Repository
public class CostRuleCacheRepositoryImpl implements CostRuleCacheRepository {

    @Autowired
    private RedisTemplate<String,List<CostRulePO>> redisTemplate;


    @Override
    public List<CostRulePO> getCostRuleByStationId(Integer stationId) {
        //定义 opsForValue 操作 Redis 字符串 数据类型的 ValueOperations
        ValueOperations<String,List<CostRulePO>> opsForValue = redisTemplate.opsForValue();
        //定义 计价规则的key 每个站id有多个计价规则 计价规则的key要包含站id
        String key = "COST_RULE_KEY_" + stationId;
        //通过 key 从redis查询出 站 id 对应的计价规则列表
        List<CostRulePO> costRulePOS = opsForValue.get(key);
        return costRulePOS;
    }

    @Override
    public void saveCostRules(Integer stationId, List<CostRulePO> costRules) {
        //定义 opsForValue 操作 Redis 字符串 数据类型的  ValueOperations
        ValueOperations<String, List<CostRulePO>> opsForValue = redisTemplate.opsForValue();
        //定义 计价规则的key  每个站id有多个计价规则 计价规则的key要包含站id
        String key = "COST_RULE_KEY_" + stationId;
        //保存计价规则到Redis key 站id value 站对应的计价规则列表
        opsForValue.set(key, costRules);
    }
}
